Alias et Espaces de noms
========================

Yii utilise les alias de manière intensive. Un alias définit l'accès à un dossier
ou à un fichier. Les alias s'écrivent en utilisant une notation pointée similaire au format
largement utilisé pour déclarer des espaces de nom.

~~~
AliasRacine.chemin.vers.la.cible
~~~

où `AliasRacine` est un alias vers un dossier existant. Il est possible de
définir de nouveaux alias en appelant [YiiBase::setPathOfAlias()]. Pour faciliter
les choses, dles alias suivant sont prédéfinis par Yii :

 - `system`: représente le répertoire du framework Yii;
 - `zii`: représente le dossier de la bibliothèque Zii;
 - `application`: représente le [répertoire de base](/doc/guide/basics.application#application-base-directory) de l'application;
 - `webroot`: représente le répertoire contenant le [script d'entrée](/doc/guide/basics.entry). Cet alias est disponible depuis la version 1.0.3.
 - `ext`: représente le dossier qui contient toutes les [extensions](/doc/guide/extension.overview) tierces. Cet alias est disponible depuis la version 1.0.8.

En complément, si l'application utilises des [modules](/doc/guide/basics.module),
un alias racine est également prédéfini pour chaque ID de module, et représente
le répertoire de base du module correspondant. Cette fonctionnalité est disponible
depuis la version 1.0.3

[YiiBase::getPathOfAlias()] est la fonction décodage. Elle permet de transformer
un alias en son chemin correspondant. Par exemple, `system.web.CController`
sera transformé en `yii/framework/web/CController`.

Un alias permet d'importer simplement une classe. Par exemple,
pour inclure la définition de la classe [CController], il est possible
d'effectuer l'appel suivant:

~~~
[php]
Yii::import('system.web.CController');
~~~

Il est à noter que la méthode [import|YiiBase::import] est plus efficace
que les directives PHP `include` et `require`. La définition de la
classe à importer n'étant pas incluse avant que la classe ne soit utilisée.
De la même manière, importer un alias plusieurs fois est plus rapide
que d'utiliser les directives `include_once` et `require_once`.

> Tip|Astuce: Il n'est pas nécessaire d'importer ou d'inclure les classes définies par le
framework Yii. Toutes les classes du noyau (core) étant pré-importées (mais instanciées uniquement
à la demande).

La syntaxe suivante peut être utilisée pour importer automatiquement
l'intégralité des classes d'un dossier:

~~~
[php]
Yii::import('system.web.*');
~~~

Les alias, en dehors de l'[import|YiiBase::import], sont utilisés pour
référencer des classes. Par exemple, un alias peut être passé à
[Yii::createComponent()] pour créer une instance de la classe correspondante,
et ce, même si la classe n'a pas été inclue précédemment.

Il est important de ne pas confondre alias et espace de noms.
Un espace de noms permet de grouper de manière logique des classes
pour qu'elles puissent être différenciées d'autres classes portant le même nom.
Un alias sert uniquement à référencer un fichier de classe ou un dossier.
Les alias n'entrent donc pas en conflit avec les espaces de noms.

> Tip|Astuce : Comme les versions de PHP antérieures à la 5.3.0 ne supportent pas
nativement les espaces de noms, il n'est pas possible de créer des
instances de deux classes portant un même nom mais ayant des définitions différentes.
En conséquence, toutes les classes du framework Yii sont préfixées de la
lettre 'C' (pour 'Classe'). Cela permet de les différencier des classes
définies par l'utilisateur. Il est donc très fortement recommandé de réserver
la lettre 'C' aux classes du framework Yii et d'utiliser d'autres lettres
pour les classes utilisateur.

<div class="revision">$Id: basics.namespace.txt 1400 2013-11-20 $</div>